package cmd

import (
	"fmt"
	"os"
	"strings"

	"downloader/internal/cdncheck"

	"github.com/spf13/cobra"
)

var cdnCmd = &cobra.Command{
	Use:   "cdn",
	Short: "检查域名是否使用CDN",
	Long: `通过多个节点ping检测域名是否使用CDN加速。
示例:
  down cdn -u example.com
  down cdn -f domains.txt`,
	RunE: func(cmd *cobra.Command, args []string) error {
		url, _ := cmd.Flags().GetString("url")
		file, _ := cmd.Flags().GetString("file")

		if url == "" && file == "" {
			return fmt.Errorf("必须指定 -u 或 -f 参数")
		}

		checker := cdncheck.NewCDNChecker()

		if url != "" {
			return checker.CheckDomain(url)
		}

		// 处理文件输入
		content, err := os.ReadFile(file)
		if err != nil {
			return fmt.Errorf("读取文件失败: %v", err)
		}

		domains := strings.Split(string(content), "\n")
		for _, domain := range domains {
			domain = strings.TrimSpace(domain)
			if domain == "" {
				continue
			}
			if err := checker.CheckDomain(domain); err != nil {
				fmt.Printf("[-] %s 检测失败: %v\n", domain, err)
			}
		}

		return nil
	},
}

func init() {
	rootCmd.AddCommand(cdnCmd)
	cdnCmd.Flags().StringP("url", "u", "", "要检测的域名")
	cdnCmd.Flags().StringP("file", "f", "", "包含多个域名的文件")
}
